﻿IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'usp_UPDMS_CFG_ATTACH_FILE_Clean_Attach_File')
	BEGIN
		DROP Procedure usp_UPDMS_CFG_ATTACH_FILE_Clean_Attach_File
	END
GO

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
/******************************************************************************
**	Name : usp_UPDMS_CFG_ATTACH_FILE_Clean_Attach_File
**	Desc : 첨부파일 정리
**	Test Exec Query : Exec usp_UPDMS_CFG_ATTACH_FILE_Clean_Attach_File ''
**	Called by : Cfg_Dac_UPDMS_CFG_ATTACH_FILE.cs
**	Program ID : Cfg1014m
**	Auth : 송시명
**	Date : 2010-10-15
*******************************************************************************
**	Change History
*******************************************************************************
**	Date:		Author:		Description:
**	--------	--------	---------------------------------------
**	
*******************************************************************************/
CREATE PROC [dbo].[usp_UPDMS_CFG_ATTACH_FILE_Clean_Attach_File]
@ls_xml nvarchar(max) = '<UPDMS></UPDMS>' --루트노드
AS
BEGIN

DECLARE @iXmlHandle int
DECLARE @SQLSTMT nvarchar(max)

DECLARE @Table nvarchar(50)
DECLARE @Column nvarchar(50)
DECLARE @Seq nvarchar(50)

EXEC sp_xml_preparedocument @iXmlHandle OUTPUT, @ls_xml

--CURSOR를 정의
DECLARE CUR CURSOR FOR
  --XML에서 데이터 조회
  SELECT [Table],
         [Column],
         [Seq]
    FROM OPENXML(@iXmlHandle, '/UPDMS/UPDMS_CFG_ATTACH_FILE', 2)
    WITH ( [Table] nvarchar(50),
           [Column] nvarchar(50),
           [Seq] nvarchar(50)
         ) x

  SET @SQLSTMT = ''

  --CURSOR를 사용하기 위해 OPEN
  OPEN CUR

  --CURSOR의 첫번째 ROW를 인출하여 변수에 저장
  FETCH NEXT FROM CUR INTO @Table, @Column, @Seq

  --현재 연결에서 연 모든 커서에 대해 실행된 마지막 커서 FETCH 문의 상태를 반환합니다.
  --  0 : FETCH 문이 성공적으로 수행되었습니다.
  -- -1 : FETCH 문이 실패했거나 행이 결과 집합의 범위를 벗어났습니다.
  -- -2 : 인출된 행이 없습니다.
    WHILE @@FETCH_STATUS = 0
      BEGIN
        SET @SQLSTMT = @SQLSTMT + 'UPDATE '+ @Table + ' SET ' + @Column + ' = '''' WHERE Seq = ' + @Seq + ';'
        FETCH NEXT FROM CUR INTO @Table, @Column, @Seq
      END

      --만들어진 SQL이 있으면 실행
      IF LEN(@SQLSTMT) <> 0
      BEGIN
      --PRINT @SQLSTMT
        EXEC (@SQLSTMT)
      END

      --OPEN 되어 있는 CURSOR를 CLOSE
    CLOSE CUR

--CURSOR 참조를 제거한다.
DEALLOCATE CUR
  
--메모리 해제
EXEC sp_xml_removedocument @iXmlHandle
END

GO